//#define  _CRT_SECURE_NO_WARNINGS
//#include <iostream>
//using namespace std;
//
//void func(string& x) { cout << "1" << endl; }
//void func(const string& x) { cout << "2" << endl; }
//void func(string&& x) { cout << "3" << endl; }
//void func(const string&& x) { cout << "4" << endl; }
//
//template<class T>
//void PerfectForward(T&& t)
//{
//	func(forward<T>(t));
//}
//
//int main()
//{
//	string str = "111";
//	const string c_str = "111";
//
//	PerfectForward(str);
//	PerfectForward(c_str);
//	PerfectForward(move(str));
//	PerfectForward(move(c_str));
//}